package com.spzx.report.aiTools;

import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
import org.w3c.dom.Text;

public class SpzxAiQuest {

    // 初始化组件
    private static ChatModel llmProc;// 通义模型
    private static ChatModel llmSum;// deepseek模型
    private MyAssistAgent agent;// 我们自己的被代理函数式接口
    private MyChatAssistAgent myChatAssistAgent;

    public SpzxAiQuest(){

        // 初始化语言模型
        this.llmProc = OpenAiChatModel.builder()
                .apiKey(SpzxAiConst.DASHSCOPE_API_KEY)
                .baseUrl(SpzxAiConst.DASHSCOPE_API_BASE_URL)
                .modelName(SpzxAiConst.QWEN_PLUS)// 通议千问
                .build();

        this.llmSum = OpenAiChatModel.builder()
                .apiKey(SpzxAiConst.DASHSCOPE_API_KEY)
                .baseUrl(SpzxAiConst.DASHSCOPE_API_BASE_URL)
                .modelName(SpzxAiConst.DEEPSEEK_V3)// deepseek v3
                .build();

        // 初始化 chatAgent 代理
        this.agent = AiServices.builder(MyAssistAgent.class)
                .chatModel(llmProc)
                .systemMessageProvider((ignored) -> PromptGenerator.systemPrompt)
                .build();

        // 初始化deepseek
        this.myChatAssistAgent = AiServices.builder(MyChatAssistAgent.class)
                .chatModel(llmSum)
                .systemMessageProvider((ignored) -> PromptGenerator.systemChatPrompt)
                .build();
    }


    /***
     * 控制层调用过程
     * @param question
     * @return
     * @throws Exception
     */
    public String processQuestion(String question) {

        System.out.println("1 原始问题："+question);

        //组合提示词模板
//        System.out.println("2 组合提示词模板=============================================");
//        String questionMerge = PromptGenerator.generatePrompt(question);
//        System.out.println(questionMerge);

        // 通议千问
        System.out.println("3 提问：通议千问===============================================");
        String answer = agent.chat(question);
        int jsonStart = answer.lastIndexOf("{");
        int jsonEnd = answer.lastIndexOf("}");
        System.out.println("4 回答：通议千问===============================================");
        System.out.println(answer);
        String jsonAnswer = answer.substring(jsonStart, jsonEnd+1);
        return  jsonAnswer;
    }

    public String processChat(String chat) {

        // deepseek
        System.out.println("3 提问：deepseek===============================================");
        String answer = myChatAssistAgent.chat(chat);
        System.out.println(chat);
        System.out.println("4 回答：deepseek===============================================");
        System.out.println(answer);
        return  answer;
    }




}